﻿
function getCurrentUserId()
{
    var userId = $("input#Id").val();
    if (!userId) {
        alert("Отсутствует идентификатор");
        return;
    }
    return userId;
}

$(document).ready(function () {

    var globalEventObject = {};
    var globalEditedObject = {};

    $('.clockpicker').clockpicker();


    $("#open").click(function () {
        $("#addEvent").modal("show");
    });

    $("#removeEvent").click(function () {
        if (globalEditedObject == null) {
            alert("Объект не инициализирован. Попробуйте обновить страницу");
            return;
        }
        if (!globalEditedObject.id || globalEditedObject.id === 0) {
            alert("Неверный идентификатор объекта");
            return;
        }
        //todo delete on server
        if (confirm("Вы уверены, что хотите удалить этот объект")) {

            $.ajax({
                url: removeEventUrl,
                type: "POST",
                data: { id: globalEditedObject.id },
                async: false,
                error: function () {
                    alert("Ошибка запроса данных с сервера. Пожалуйста, попробуйте обновить страницу");
                },
                success: function (response) {
                    if (response.error) {
                        alert(response.error);
                    }
                    else if (response.success) {
                        $('#calendar').fullCalendar('removeEvents', globalEditedObject._id);
                        $("#addEvent").modal("hide");
                    }
                    else {
                        alert("Ошибка получения данных с сервера. Пожалуйста, попробуйте обновить страницу");
                    }
                }
            });

        }
    })

    $("#addEventClick").click(function () {
        var startWorkTime = $("#startWorkTime").val();
        var endWorkTime = $("#endWorkTime").val();
        if (!startWorkTime || !endWorkTime) {
            alert("Пожалуйста, заполните поля формы");
            return;
        }

        if (!globalEventObject.start) {
            alert("Невозможно добавить объект. Пожалуйста, перезагрузите страницу");
            return;
        }

        var serverEntityId;
        var serverError = false;

        $.ajax({
            url: addEventUrl,
            type: "POST",
            data: { Year: globalEventObject.year, Month: globalEventObject.month, Day: globalEventObject.day, StartTime: startWorkTime, EndTime: endWorkTime, IdUser: getCurrentUserId() },
            error: function () {
                alert("Во время отправки данных на сервер произошла ошибка. Пожалуйста, попробуйте обновить страницу");
            },
            async: false,
            success: function (response) {
                if (!response) {
                    alert("Не удалось получить данные с сервера. Попробуйте обновить страницу.");
                    serverError = true;
                }
                if (response.error) {
                    alert(response.error);;
                    serverError = true;
                }
                if (response.id) {
                    serverEntityId = response.id;
                }
                else {
                    alert("Не удалось получить данные с сервера. Попробуйте обновить страницу.");
                    serverError = true;
                }
            }
        });

        if (serverError) {
            return;
        }

        var newEvent = new Object();
        newEvent.title = startWorkTime + " - " + endWorkTime;
        newEvent.start = globalEventObject.start;
        newEvent.allDay = false;
        newEvent.id = serverEntityId;
        newEvent.startWorkTime = startWorkTime;
        newEvent.endWorkTime = endWorkTime;
        newEvent.year = globalEventObject.year;
        newEvent.day = globalEventObject.day;
        newEvent.month = globalEventObject.month;

        $('#calendar').fullCalendar('renderEvent', newEvent, true);

        $("#addEvent").modal("hide");
    })

    $("#editEvent").click(function () {
        var startWorkTime = $("#startWorkTime").val();
        var endWorkTime = $("#endWorkTime").val();
        if (!startWorkTime || !endWorkTime) {
            alert("Пожалуйста, заполните поля формы");
            return;
        }

        if (!globalEditedObject.id || globalEditedObject.id === 0) {
            alert("Не заджан идентификатор объекта. Пожалуйста, попробуйте обновить страницу.");
            return;
        }

        var requestObject = {
            Id: globalEditedObject.id,
            Year: globalEditedObject.year,
            Month: globalEditedObject.month,
            Day: globalEditedObject.day,
            StartTime: startWorkTime,
            EndTime: endWorkTime,
            IdUser: getCurrentUserId()
        };

        $.ajax({
            url: editEventUrl,
            type: "POST",
            data: requestObject,
            error: function () {
                alert("Во время отправки данных на сервер произошла ошибка. Пожалуйста, попробуйте обновить страницу");
            },
            async: false,
            success: function (response) {
                if (response.error) {
                    alert(response.error);
                }
                else if (response.success) {
                    globalEditedObject.title = startWorkTime + " - " + endWorkTime;
                    globalEditedObject.startWorkTime = startWorkTime;
                    globalEditedObject.endWorkTime = endWorkTime;
                    //globalEditedObjecs.year = 
                    $('#calendar').fullCalendar('updateEvent', globalEditedObject);
                    $("#addEvent").modal("hide");
                }
                else {
                    alert("Ошибка получения данных с сервера. Пожалуйста, попробуйте обновить страницу");
                }
            }
        });				
    })

    function openAddDialog() {
        $("#editButtons").hide();
        $("#addButtons").show();
        $("#addEvent").modal("show");
    }

    function openEditDialog(eventObject) {

        if (!eventObject.hasOwnProperty("id")) {
            alert("Идентификатор объекта не задан. Пожалуйста, обновите страницу и попробуйте снова");
            return;
        }

        $("#startWorkTime").val(eventObject.startWorkTime);
        $("#endWorkTime").val(eventObject.endWorkTime);

        $("#editButtons").show();
        $("#addButtons").hide();
        $("#addEvent").modal("show");
    }

    function renderCalendar(eventsList) {
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek'
            },
            defaultDate: currentDate,
            dayClick: function (date, allDay, jsEvent, view) {

                if (!canEdit) {
                    return;
                }

                var date2 = new Date(date._d.getFullYear(), date._d.getMonth(), date._d.getDate() + 1);
                var exists = false;

                $.ajax({
                    url: checkIfEventExists,
                    data: { year: date._d.getFullYear(), month: date._d.getMonth() + 1, day: date._d.getDate(), idUser: getCurrentUserId() },
                    type: "GET",
                    async: false,
                    error: function() {
                        alert("Произошла ошибка. Попробуйте перезагрузить страницу");
                        exists = true;
                    },
                    success: function (response) {
                        if (!response) {
                            exists = true;
                        }
                        if (response.exists) {
                            exists = true;
                        }
                        else {
                            if (response.message) {
                                alert(response.message);
                            }
                        }
                    }
                })

                if (exists) {
                    return;
                }

                globalEventObject.start = date._d;
                globalEventObject.year = date._d.getFullYear();
                globalEventObject.day = date._d.getDate();
                globalEventObject.month = date._d.getMonth() + 1;

                openAddDialog();
            },
            eventClick: function (calEvent, jsEvent, view) {
                if (!canEdit) {
                    return;
                }

                globalEditedObject = calEvent;
                openEditDialog(calEvent);
            },
            buttonIcons: false, // show the prev/next text
            weekNumbers: true,
          //  editable: canEdit,
            eventLimit: true, // allow "more" link when too many events
            events: eventsList
        });
    }

    //var eventsList;
    $.ajax({
        url: eventsListUrl,
        data: { idUser: getCurrentUserId() },
        type: "GET",
        beforeSend: function () {
        },
        error: function () {
            alert("Ошибка запроса данных с сервера. Пожалуйста, обновите страницу");
        },
        success: function (response) {
            renderCalendar(response);
        }
    })
			
});